package com.dd.cloud.user.service.phar;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.user.entity.phar.Pharmacy;
import com.dd.cloud.user.req.phar.*;
import com.dd.cloud.user.res.phar.*;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 药房表 服务类
 * </p>
 *
 * @author czg
 * @since 2022-09-23
 */
public interface IPharmacyService extends IService<Pharmacy> {
    /**
     * 获取使用的药房
     *
     * @param mechanId
     * @return
     */
    Pharmacy getPharmacy(Integer mechanId);

    /**
     * 获取药房标识
     *
     * @param id
     * @return
     */
    Integer getPharmacyFlag(Integer id);

    /**
     * 统计药房首页头部数据
     *
     * @return
     */
    PharmacyHomeTopStatisticsRes statisticsPharmacyHomeTop();

    /**
     * 统计药房首页近期收入情况数据
     *
     * @param req
     * @return
     */
    PharmacyHomeChartStatisticsRes statisticsPharmacyHomeChart(PharmacyHomeChartStatisticsReq req);

    /**
     * 统计药房首页药品总用量排行榜
     *
     * @param req
     * @return
     */
    IPage<PharmacyHomeDrugDosageStatisticsRes> statisticsPharmacyHomeDrugDosage(PharmacyHomeDrugDosageStatisticsReq req);

    /**
     * 查询药房可查询的机构 下拉框使用
     *
     * @return
     */
    List<PharmacyMechanSelectRes> queryPharmacyMechanSelect();

    /**
     * 查询药房开始收入时间
     *
     * @return
     */
    LocalDateTime queryFirstPharmacyIncomeDate();

    /**
     * 添加药房数据
     */
    void addPharmacy(AddPharmacyReq req);

    /**
     * 修改药房数据
     */
    void updatePharmacy(UpdatePharmacyReq req);

    /**
     * 修改药房状态
     */
    void updatePharmacyStatus(Integer id, Integer status);

    /**
     * 分页查询药房数据
     */
    Page<PharmacyPageRes> getPharmacyPage(PharmacyPageReq req);

    /**
     * 查询药房list select框查询
     */
    List<PharListRes> getPharmacyList(Integer[] ids);
}
